package com.hackordie.commons.software;

import com.hackordie.constants.ESoftwareType;

public abstract class AProgram implements IProgram {

    String name;
    String description;
    int size;
    ESoftwareType softwareType;
    int requiredRam;
    int requiredProcessor;
    boolean started;

    public AProgram(String name, String description, int size,
            ESoftwareType softwareType, int requiredRam, int requiredProcessor) {

        this.name = name;
        this.description = description;
        this.size = size;
        this.softwareType = softwareType;
        this.requiredRam = requiredRam;
        this.requiredProcessor = requiredProcessor;

        this.started = false;
    }

    // getters
    public String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

    public int getSize() {
        return size;
    }

    public ESoftwareType getSoftwareType() {
        return softwareType;
    }

    public int getRequiredRam() {
        return requiredRam;
    }

    public int getRequiredProcessor() {
        return requiredProcessor;
    }
    
    public boolean isStarted() {
        return started;
    }
    
    public void setStarted(boolean started) {
        this.started = started;
    }
    
    //functions 
    public boolean run(Object[] obj) {    
        return false;
    }
    
    public abstract boolean checkObj (Object[] obj);
}
